分类
联系方式
  1. 新浪微博
  2. E-mail

Maxiee Weekly No.2

博客文章

  1. 《Skia-python:Skia 的 Python 封装》
    1. Skia 是一个著名的 2D 高性能图形绘制库,是 Google 公司在多年前收购来的一个项目,目前被广泛用于 Google 的大型开源项目中。比如 Chrome、Android、Flutter,它们的底层都采用 Skia 进行绘制。
    2. skia-python 是对 skia 库的一个 Python 语言封装。由于 Python 语言安装依赖和开发都比较简单,因此非常适合于学习 Skia。
  2. 《MongoDB Atlas 云服务》
    1. MongoDB Atlas 是 MongoDB 自家的云服务。目前各大云服务厂商都提供 MongoDB 云服务。为什么选择 Atlas 呢?原因是它对初学者提供免费实例,适合个人学习或者是做一些小项目时使用。

文章

  1. 《Deferred Components-实现Flutter运行时动态下发Dart代码》
    1. Flutter 2.2 推出 Deferred Components 功能
      1. Dart 库、资源动态下发
      2. 只支持 Android,App Bundle
      3. 基于 Dart2.13 的 Split AOT 编译能力
    2. 拆分 libapp.so
      1. libapp.so 包含了所有业务代码
      2. 对 libapp.so 进行拆分
    3. Google 生态
      1. 依赖 Google Play 生态
      2. 针对中国开发者有不依赖 Google Play 的方案,缺乏文档
    4. Deferred-Components Dart 加载逻辑
      1. Dart 异步加载
      2. 底层 Android PlayStoreDynamicFeatureManager
      3. 加载完成后将结果返回 Dart 侧
    5. loadDartLibrary
      1. 找到 so 的位置
      2. 调用 FlutterJNI dlopen 命令打开so文件
    6. 基于 Deferred Components 的动态化方案
      1. 基于 Flutter Deferred Components 打出拆分 so
      2. so 放在数据目录(SD 卡/网络下发)
      3. 继承 DeferredComponentManager,替换 PlayStoreDynamicFeatureManager
  2. 《Kubernetes vs Docker Compose: What's the difference?》
    1. Kubernetes 和 Docker Compose 都是容器编排框架
    2. Kubernetes 在多台机器上运行容器,Docker Compose 在单台机器上运行容器
  3. 《什么是云原生?这回终于有人讲明白了》
    1. 一种构建和运行应用程序的方法
    2. Cloud:应用程序位于云中
    3. Native:程序为云而设计,充分利用弹性、分布式
    4. 2013年Pivotal的Matt Stine首次提出
    5. 《迁移到云原生架构》
    6. Matt Stine总结特征:
      1. Version1:12因素、微服务、自敏捷、基于 API 协作、扛脆弱性
      2. Version2:模块化、可观察、可部署、可测试、可替换、可处理
      3. Version3:DevOps、持续交付、微服务、容器
    7. 云原生架构:
      1. k8s + Docker 容器化
      2. 基于微服务(灵活性、可维护性)
      3. 持续迭代、运维自动化
      4. 弹性伸缩,动态调度
    8. 微服务:理论基础是康威定律
    9. DevOps:开发和运维合体,还包括测试
  4. 《skia-python》
    1. Skia 是 Chrome/Android/Flutter 背后的高性能 2D 图像绘制库
    2. Skia 是前端的财富密码,成功的前端项目都与它有关
    3. skia-python 是 skia 的 Python 封装,非常适合入门学习 Skia
    4. 该项目的挖掘价值:
      1. Skia 功能、API,通过 Python 语言简单容易
      2. 如何编译 Skia 代码
      3. 如何用一种语言封装 Skia
  5. 《Flutter 热更新功能实现》
    1. Android 单端热更新
    2. Flutter 构建产物
      1. jni 下 libflutter.so:Flutter 引擎,Skia、Dart 都在其中
      2. libs 下 flutter.jar:Embedder Java 侧实现
      3. assets
        1. flutter_assets:图片、字体资源
        2. 代码快照
          1. isolate_snapshot_data
          2. isolate_snapshot_instr
          3. vm_snapshot_data
          4. vm_snapshot_instr
    3. Android 侧 Flutter 初始化源码
      1. FlutterMain 入口
      2. initConfig 指定快照名称
      3. initResources 通过 ResourceExtractor 访问 asset
        1. 访问地址是 Hook 点
    4. 热更新远离
      1. 源码热更新
        1. 远程下载快照
        2. 拷贝到 Hook 点地址(替换已有)
        3. 引擎执行时从新快照执行
      2. 资源热更新
        1. asset 目录没法替换
        2. 使用 Image.file 从制定外部目录加载
  6. 《FLUTTER FRAMEWORK: HOW DOES IT WORK?》
    1. 2017年5月首次发布,更像游戏引擎
    2. 应用由 Widget 组成,被渲染到 Skia Canvas,平台对 Canvas 进行渲染
    3. AOT 编译,应用原生速度运行
    4. Platform 层
      1. Flutter 包含 Shell,用于在不同平台上提供 DartVM
      2. Shell 平台相关,提供原生平台 API,创建平台相关 Canvas
      3. 支持平台:Android、iOS、Windows、Linux……
      4. 如果你想把 Flutter 作为库使用,使用 platform/embedder
    5. Flutter 引擎层:
      1. 提供 Dart 运行时、Skia、Platform Channel 等等
      2. 建立在 Platform 层之上
    6. Flutter Framework 层
      1. 最上层,开发框架
      2. UI 最终被绘制成 Skia Canvas

主题项目

skia-python-demos:demos for skia-python